home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / e / amigae30a_fr.lha / AmigaE30f / Sources / Gfx / IfsFern.e < prev    next >
Encoding:
Text File  |  1994-12-02  |  1.4 KB  |  58 lines

  1. /* Transformations affines itératives
  2.  
  3.    vous donne une page à l'écran d'une façon spéciale.
  4.    Soyez patient : ca prendra un peu de temps avant que
  5.    ne voyez quelque chose.
  6.  
  7. */
  8.  
  9. OPT OSVERSION=39  /* oh, and we need a 640*512*256 screen */
  10.  
  11. CONST SCRX=740, SCRY=580, PLANES=8
  12.  
  13. OBJECT trans
  14.   a,b,c,d,ox,oy,prob
  15. ENDOBJECT
  16.  
  17. DEF win,scr
  18.  
  19. PROC main()
  20.   DEF a
  21.   scr:=OpenS(SCRX,SCRY,PLANES,$8004,'Fern')
  22.   IF scr=NIL
  23.     WriteF('Ne peut pas ouvrir d\aécran!\n')
  24.   ELSE
  25.     win:=OpenW(0,0,SCRX-1,SCRY-1,$200,$F,'Fern',scr,15,NIL)
  26.     IF win=NIL
  27.       WriteF('Ne peut pas ouvrir de fenêtre!\n')
  28.     ELSE
  29.       FOR a:=0 TO 255 DO SetColour(scr,a,a,a,a)
  30.       do([[  .0,   .0,   .0,  .16,.0, .0, 1 ]:trans,   -> retour à la racine!
  31.           [  .2,   .23,(-.26),.22,.0,1.6, 7 ]:trans,   -> feuille de droite
  32.           [(-.15), .26,  .28, .24,.0, .44,7 ]:trans,   -> feuille de gauche
  33.           [  .85,(-.04), .04, .85,.0,1.6, 85]:trans])  -> corps
  34.       ->WaitIMessage(win)
  35.       CloseW(win)
  36.     ENDIF
  37.     CloseS(scr)
  38.   ENDIF
  39. ENDPROC
  40.  
  41. PROC do(t:PTR TO LONG)
  42.   DEF x=1.,y=1.,r,n,a,tr:PTR TO trans,xn,yn,sx,sy,d
  43.   REPEAT
  44.     r:=Rnd(100)
  45.     n:=0
  46.     FOR a:=1 TO ListLen(t)
  47.       tr:=t[a-1]
  48.     EXIT (r>=n) AND (tr.prob+n>r)
  49.       n:=n+tr.prob
  50.     ENDFOR
  51.     sx:=!(xn:=!(!tr.a*x)+(!tr.c*y)+tr.ox)*60.!+(SCRX/2)
  52.     sy:=SCRY-(!(yn:=!(!tr.b*x)+(!tr.d*y)+tr.oy)*50.!)
  53.     d:=Bounds(ReadPixel(stdrast,sx,sy)+20,64,255)
  54.     Plot(sx,sy,d)
  55.     x:=xn; y:=yn
  56.   UNTIL LeftMouse(win)
  57. ENDPROC
  58.